package binbaum;
import java.awt.BorderLayout;
import java.awt.Container;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class BaumDemo extends JFrame implements ChangeListener{
  BaumPanel baum;
  JSlider abstand;

  public BaumDemo(IBinBaum bb){
    super("BinBaum-Demo");
    baum=new BaumPanel(18,6,4,10,false);
    JScrollPane jsp=new JScrollPane(baum);
    Container c=getContentPane();
    c.add(jsp, BorderLayout.CENTER);
    abstand=new JSlider(JSlider.HORIZONTAL, 0, 50, 10);
    abstand.setMajorTickSpacing(10);
    abstand.setPaintTicks(true);
    abstand.setPaintLabels(true);
    abstand.addChangeListener(this);
    c.add(abstand, BorderLayout.SOUTH);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(300,300);
    setVisible(true);
  }

  public void erneuern(){
    baum.repaint();
    baum.revalidate();
  }
  
  public static void main(String[] args){
    Scanner eingabe=new Scanner(System.in);
    AVLBaum bb=new AVLBaum();// oder ein anderer IBinBaum
    int anz=Integer.parseInt(args[0]);
    int max=Integer.parseInt(args[1]);
    for(int i=0; i<anz; ++i) bb.insert((int)(Math.random()*max));
		//for(int z: new int[]{20,10,30,5,15,25,35,3,6,12,16,23,26,34,17,14,22,24,1,11,13,36,37}) bb.insert(z);
		//for(int i=0; i<100; i++) bb.insert(i);
    BaumDemo m=new BaumDemo(bb);
    m.baum.setPseudoWurzel(bb.hohlkopf);
    int d=0;
    System.out.println("Gib die Zahlen ein, die gelöscht werden sollen!");
		m.erneuern();
    while(d!=-1){
      d=eingabe.nextInt();
			System.out.println("Entferne "+d);
			bb.delete(d);
      m.erneuern();
    }
    System.exit(0);
  }

	@Override
  public void stateChanged(ChangeEvent arg0) {
    int dist=abstand.getValue();
    baum.setDist(dist, dist);
  }
}
